////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
#include "Wall.hpp"

#include <SmegCore/Entity/EntityManager.hpp>
#include <SmegCore/Math/BoundingVolumes/BoundingBox.hpp>

#include <SmegTools/Debug/DebugNew.hpp>
        
////////////////////////////////////////////////////////////
/// Default Constructor
////////////////////////////////////////////////////////////
Wall::Wall() :
    smeg::core::BaseEntity()
{
    ComputeBoundingVolume();
    smeg::core::EntityManager::GetInstance()->AddEntity( this );
}
    
////////////////////////////////////////////////////////////
/// Constructor with a texture
////////////////////////////////////////////////////////////
Wall::Wall( const sf::Texture* _pTexture ) :
    smeg::core::BaseEntity( _pTexture )
{
    ComputeBoundingVolume();
    smeg::core::EntityManager::GetInstance()->AddEntity( this );
}
    
////////////////////////////////////////////////////////////
/// Constructor with a texture and a rectangle
////////////////////////////////////////////////////////////
Wall::Wall( const sf::Texture* _pTexture, const sf::IntRect& _Rectangle ) :
    smeg::core::BaseEntity( _pTexture, _Rectangle )
{
    ComputeBoundingVolume();
    smeg::core::EntityManager::GetInstance()->AddEntity( this );
}
    
////////////////////////////////////////////////////////////
/// Copy Constructor
////////////////////////////////////////////////////////////
Wall::Wall( const Wall& _Copy ) :
    smeg::core::BaseEntity( _Copy )
{
    ComputeBoundingVolume();
    smeg::core::EntityManager::GetInstance()->AddEntity( this );
}
    
////////////////////////////////////////////////////////////
/// Destructor
////////////////////////////////////////////////////////////
Wall::~Wall()
{
}

void Wall::ComputeBoundingVolume()
{
    m_pBoundingVolume = new smeg::math::BoundingBox(    getPosition(), 
                                                        sf::Vector2f( smeg::math::RandRange( 50.0f, 200.0f ), smeg::math::RandRange( 50.0f, 200.0f ) ),
                                                        smeg::math::RandRange( 0.0f, 360.0f ) );

    smeg::core::BaseEntity::ComputeBoundingVolume();
}

